package cn.smile.business.core;

import cn.smile.bean.dto.core.DicInfoDTO;
import cn.smile.bean.dto.core.PickerDTO;
import cn.smile.bean.entity.core.DicInfo;
import cn.smile.bean.form.core.dic.DicAddForm;
import cn.smile.bean.form.core.dic.DicUpdateForm;
import cn.smile.bean.form.core.dic.QueryDicForm;
import cn.smile.commons.domain.IBaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;
import java.util.Map;

public interface IDicInfoService extends IBaseService<DicInfo> {

    /**
     * 新增字典
     *
     * @param form 新增参数
     * @return 新增结果
     */
    Boolean addDic(DicAddForm form);

    /**
     * 更新字典项目
     *
     * @param form 字典项参数
     * @return 更新结果
     */
    Boolean updateDic(DicUpdateForm form);

    /**
     * 查询字典项
     *
     * @param parentId 字典父级ID
     * @return 查询结果
     */
    List<DicInfoDTO> getDicList(String parentId);

    /**
     * 查询字典项(指定用户ID)
     *
     * @param parentId 字典父级ID
     * @param userId 用户ID
     * @return 查询结果
     */
    List<DicInfoDTO> getDicList(String parentId, String userId);

    /**
     * 查询字典项
     *
     * @param parentId 字典父级ID
     * @return 查询结果
     */
    Map<Integer, DicInfoDTO> getDicMap(String parentId);

    /**
     * 查询字典项(指定用户ID)
     *
     * @param parentId 字典父级ID
     * @param userId 用户ID
     * @return 查询结果
     */
    Map<Integer, DicInfoDTO> getDicMap(String parentId, String userId);

    /**
     * 微信小程序获取字典项目
     *
     * @param parentId 字典父级ID
     * @return 获取结果
     */
    List<PickerDTO> miniProjectDicList(String parentId);

    /**
     * 分页查询字典项
     *
     * @param form 查询参数
     * @return 查询结果
     */
    IPage<DicInfoDTO> queryPage(QueryDicForm form);

    /**
     * 删除数据字典
     *
     * @param dicId 数据字典ID
     * @return 删除结果
     */
    Boolean delDic(String dicId);
}
